package org.melanesia.sql;

import org.melanesia.converters.JavaToJdbcConverter;

/**
 * Input parameter metadata.
 *
 * @author marcin.kielar
 */
class InputParameter {

    /** Parameter name. */
    private final String name;

    /** Parameter value. */
    private final Object value;

    /**
     * Optional, explicitly set java to jdbc converter. If none set, the
     * converter will be looked up in {@link org.melanesia.converters.TypeConverter}.
     */
    private final JavaToJdbcConverter converter;

    /**
     * Constructs new <code>InputParameter</code>.
     *
     * @param name
     *            parameter name
     * @param value
     *            parameter value
     */
    public InputParameter(final String name, final Object value) {
        this(name, value, null);
    }

    /**
     * Constructs new <code>InputParameter</code>.
     *
     * @param name
     *            parameter name
     * @param value
     *            parameter value
     * @param converter
     *            java to jdbc type converter
     */
    InputParameter(final String name, final Object value, final JavaToJdbcConverter converter) {
        this.name = name;
        this.value = value;
        this.converter = converter;
    }

    /**
     * Returns parameter name.
     *
     * @return parameter name
     */
    final String getName() {
        return name;
    }

    /**
     * Returns parameter value.
     *
     * @return parameter value
     */
    final Object getValue() {
        return value;
    }

    /**
     * Returns the explicitely set converter for this parameter value.
     *
     * @return java to jdbc type converter
     */
    final JavaToJdbcConverter getConverter() {
        return converter;
    }
}
